先在 Products 新增通用屬性。例如顏色,紅、藍、綠,尺寸,大、中、小。
下圖是 terms 資料表
新增一個商品
商品頁的下半部把 Attributes 都拉進来
從網址可以看到,現在這個商品代號是 34
下圖,原本35-43 那些記錄是沒有的。但是如圖所示,按下 Go 之後,它會自動產生每一種組合。每一個編號都是一筆商品。
下圖是 posts 資料表
右邊 post_name 欄位,使用線上解碼查出,就是主商品的 post_title。難道 post_name 就是 url 字串,俗稱的 slug ?
回到 All Products 可以看到,這系列的商品只顯示一個。但是資料表確實產生了多件變種商品。
回到該項主商品的編輯頁 > Variations, 圖中的黑手區域,點擊之後可以展開收合該項變種的設定
展開後,可以設定標準價格 Regular price, 優惠價 Sale price... 等等
下圖是 postmeta 資料表
其中 meta_id=183, post_id 這筆商品的 postmeta 記錄,內容如下
a:2:{s:8:"pa_color";a:6:{s:4:"name";s:8:"pa_color";s:5:"value";s:0:"";s:8:"position";i:0;s:10:"is_visible";i:1;s:12:"is_variation";i:1;s:11:"is_taxonomy";i:1;}s:7:"pa_size";a:6:{s:4:"name";s:7:"pa_size";s:5:"value";s:0:"";s:8:"position";i:1;s:10:"is_visible";i:1;s:12:"is_variation";i:1;s:11:"is_taxonomy";i:1;}}
pa_color 其中的 pa, 我猜是 product attribute 的縮寫
而 meta_value 這一欄的型態,是 longtext
也就是說,wordpress 根本不管什麼欄位的優化,像是 用 char 好還是 varchar好?用 varchar 要開多長的寬度?要用 decimal 還是 float 還是 double ?? 反正通通都是 longtext。
我好奇。我之前待過某家公司,料件有兩萬件。它的網站系統跑起來有點慢。若照 wordpress 這種做法,postmeta 會是好幾倍,超過 20 倍算是基本的。
下圖把商品代號 35 全抓出來,共21筆。所以兩萬筆料件 x 21,那就是 42 萬筆記錄。效率?可能它有快取,目前還不瞭解它的程式碼。